API Documentation
TestClass.h
1 // TestClass.h
3 //
5 
6 namespace nkDebug
7 {
50  class TestClass
51  {
52  public :
53 
54  // Attributes
55  // Functions
57  ClassInitFunctionDescriptor* _classInitFunction ;
58  ClassShutdownFunctionDescriptor* _classShutdownFunction ;
59  ClassInitFunctionDescriptor* _testFunctionInitFunction ;
60  ClassShutdownFunctionDescriptor* _testFunctionShutdownFunction ;
61 
62  // Tracking name
63  const char* _name ;
64 
65  public :
66 
67  // Constructor, destructor
71  TestClass () ;
77  TestClass (const nkLog::StringView& name) ;
81  virtual ~TestClass () ;
82 
83  // Execution
89  void execute (const TestRunParameters& parameters) const ;
90 
91  // Registering
98  bool setClassInitFunction (const std::function<bool ()>& func) ;
105  bool setClassShutdownFunction (const std::function<void ()>& func) ;
112  bool setTestFunctionInitFunction (const std::function<bool ()>& func) ;
119  bool setTestFunctionShutdownFunction (const std::function<void ()>& func) ;
120  } ;
121 
122  static const char NK_DEBUG_STATIC_EMPTY_CHAR [] = "" ;
123 
132  template <typename T, const char* T_NAME>
134  {
135  public :
136 
137  // Functions
138  // Constructor
143  : TestClass (T_NAME)
144  {
145  // Nothing to do
146  }
147 
148  // Factory
155  {
156  return new T () ;
157  }
158 
159  public :
160 
161  // Attributes
162  // Registered class pointer
164  } ;
165 }
166 
167 #define NK_TEST_CLASS(name) \
168  static const char NK_DEBUG_STATIC_CHAR_##name [] = #name ; \
169  class name : public nkDebug::RegisteredTestClass<name, NK_DEBUG_STATIC_CHAR_##name>
170 
171 #define NK_TEST_FUNCTION(name) \
172  static void caller_##name () \
173  { \
174  return name() ; \
175  } \
176  \
177  inline static const std::function<void ()>& registered_##name = _registered->_testFunctions.registerFunction(#name, &caller_##name) ; \
178  \
179  static void name () \
180 
181 #define NK_TEST_CLASS_INIT \
182  static bool classInitFunctionCaller () \
183  { \
184  return classInitFunction() ; \
185  } \
186  \
187  inline static const bool classInitRegistered = _registered->setClassInitFunction(classInitFunctionCaller) ; \
188  \
189  static bool classInitFunction () \
190 
191 #define NK_TEST_CLASS_SHUTDOWN \
192  static void classShutdownFunctionCaller () \
193  { \
194  classShutdownFunction() ; \
195  } \
196  \
197  inline static const bool classShutdownRegistered = _registered->setClassShutdownFunction(classShutdownFunctionCaller) ; \
198  \
199  static void classShutdownFunction () \
200 
201 #define NK_TEST_FUNCTION_INIT \
202  static bool testFunctionInitFunctionCaller () \
203  { \
204  return testFunctionInitFunction() ; \
205  } \
206  \
207  inline static const bool testFunctionInitRegistered = _registered->setTestFunctionInitFunction(testFunctionInitFunctionCaller) ; \
208  \
209  static bool testFunctionInitFunction () \
210 
211 #define NK_TEST_FUNCTION_SHUTDOWN \
212  static void testFunctionShutdownFunctionCaller () \
213  { \
214  testFunctionShutdownFunction() ; \
215  } \
216  \
217  inline static const bool testFunctionShutdownRegistered = _registered->setTestFunctionShutdownFunction(testFunctionShutdownFunctionCaller) ; \
218  \
219  static void testFunctionShutdownFunction () \
220 
221 #define NK_TEST_VALIDATE return true ;
222 
223 #define NK_TEST_REJECT return false ;
224 
225 #define NK_TEST_CHECK(x) if (!x) return false ;
nkDebug::RegisteredTestClass
Holds informations about a registered test class.
Definition: TestClass.h:134
nkDebug::TestClass::_testFunctions
FunctionSet _testFunctions
Registered functions to run.
Definition: TestClass.h:56
nkLog::StringView
Allows to exchange strings with external code.
Definition: StringView.h:18
nkDebug::TestClass::_testFunctionInitFunction
ClassInitFunctionDescriptor * _testFunctionInitFunction
Callback called before calling each function.
Definition: TestClass.h:59
nkDebug::UnitTester::registerTestClass
static TestClass * registerTestClass(const std::function< TestClass *()> &factoryFunction)
nkDebug::FunctionSet
A function set holding testing functions.
Definition: FunctionSet.h:14
nkDebug::TestClass::execute
void execute(const TestRunParameters &parameters) const
nkDebug::TestClass::_classShutdownFunction
ClassShutdownFunctionDescriptor * _classShutdownFunction
Callback called after all test functions have been called.
Definition: TestClass.h:58
nkDebug::TestClass::_name
const char * _name
Class name for tracking purposes.
Definition: TestClass.h:63
nkDebug::TestClass::setTestFunctionInitFunction
bool setTestFunctionInitFunction(const std::function< bool()> &func)
nkDebug::TestClass::_testFunctionShutdownFunction
ClassShutdownFunctionDescriptor * _testFunctionShutdownFunction
Callback called after calling each function.
Definition: TestClass.h:60
nkDebug::TestClass::setTestFunctionShutdownFunction
bool setTestFunctionShutdownFunction(const std::function< void()> &func)
nkDebug::TestClass::setClassShutdownFunction
bool setClassShutdownFunction(const std::function< void()> &func)
nkDebug::RegisteredTestClass::factoryFunc
static TestClass * factoryFunc()
Definition: TestClass.h:154
nkDebug::TestRunParameters
Parameters allowing to drive a test run sequence.
Definition: TestRunParameters.h:12
nkDebug::RegisteredTestClass::_registered
static TestClass * _registered
Registering witness.
Definition: TestClass.h:163
nkDebug::TestClass::_classInitFunction
ClassInitFunctionDescriptor * _classInitFunction
Callback called before calling the test functions.
Definition: TestClass.h:57
nkDebug::TestClass::TestClass
TestClass()
nkDebug::RegisteredTestClass::RegisteredTestClass
RegisteredTestClass()
Definition: TestClass.h:142
nkDebug
Encompasses all API of component NilkinsDebug.
Definition: LogManager.h:7
nkDebug::TestClass::TestClass
TestClass(const nkLog::StringView &name)
nkDebug::TestClass::~TestClass
virtual ~TestClass()
nkDebug::TestClass
The test enabling class, allowing registration within the UnitTester.
Definition: TestClass.h:51
nkDebug::TestClass::setClassInitFunction
bool setClassInitFunction(const std::function< bool()> &func)